home *** CD-ROM | disk | FTP | other *** search
/ Risc World Words - Complete RISC World 1 to 6 / Risc World Words - Complete RISC World 1 to 6.iso / HTML / VOLUME1 / ISSUE3 / TEXT < prev   
Text File  |  2006-03-20  |  86KB  |  999 lines

  1.  
  2. ÿÿÿÿVOLUME1/ISSUE3/AWK/INDEX.HTM Volume 1, Issue 3, Great awk: part 3
  3.  
  4.  
  5.  
  6.  
  7. Great awk
  8. Gavin Wraith continues his series on awk.
  9. (If you missed the earlier parts there's a copy of the Mawk interpreter in the SOFTWARE directory on the CD-ROM.)
  10. Regular expressions
  11. Besides numbers, strings and arrays, awk has another
  12. datatype, regular expressions, not to be found in older
  13. programming languages like Basic. A regular expression denotes
  14. a class of strings. We say that a string matches a regular
  15. expression if it belongs to the class which the regular expression
  16. denotes. Just as strings are enclosed in double-quotes ("),
  17. regular expressions are enclosed in forward-slashes (/). 
  18. In a regular expression the following characters play a special role,
  19. and are known as metacharacters.
  20. \ ^ $ . [ ] | ( ) * + ?
  21. The strings of characters that appear berween the forward-slashes are
  22. built up as follows
  23. A non-metacharacter 
  24.  
  25. simply matches itself
  26.  
  27. matches .
  28. The metacharacter . matches any single character
  29. The metacharacter  ^ matches the beginning of a string
  30. The metacharacter $ matches the end of a string
  31.  
  32. matches any of
  33.  
  34.  
  35. matches any character apart from 
  36.  
  37.  
  38. matches any character in the range from
  39.  to
  40.  
  41.  
  42. matches any character not in the range from
  43.  
  44. to 
  45.  
  46. matches any string matched by either
  47.  
  48. or 
  49.  
  50. matches any string of the form
  51.  
  52. where 
  53. matches 
  54. and 
  55. matches 
  56.  
  57. matches zero or more consecutive strings each of which are matched by
  58.  
  59.  
  60. matches one or more consecutive strings each of which are matched by
  61.  
  62.  
  63. matches zero or one string matched by
  64.  
  65.  
  66. matches any string matched by
  67.  
  68. The parentheses may be needed to disambiguate expressions.
  69. The alternative operator (|) has lowest precedence,
  70. followed by concatenation, followed by *, +,
  71. and ?. So, for exampl
  72. /^[A-Za-z][A-Za-z0-9]*$/ 
  73.  
  74. matches a string starting with a letter and followed by any
  75. number of letters or digits.
  76. awk variable names must be of this form
  77. /^[+-]?[0-9]+\.?[0-9]*$/
  78. matches a decimal number with an optional sign and an
  79. optional fractional part
  80. The algebra of regular expressions is named after the logician S.C.Kleene.
  81. Of course, there may be many different regular expressions describing
  82. the same class of strings. For example, if
  83.  and
  84.  
  85. denote regular expressions, then we have identities such a
  86. Are there a finite number of such laws from which all the others
  87. may be deduced (is the algebraic theory of Kleene algebras finitely
  88. presented)? The answer is almost certainly no, but I know of no proof
  89. As in Basic, Boolean values in awk are just numbers - 0 for
  90. false, 1 (or any nonzero number) for true.
  91. An expression of the for
  92. <string expression> 
  93. ~ <regular expression>
  94. gives 1 if the string expression has a substring matched by
  95. the regular expression, and 0 otherwise. Similarly
  96. <string expression> 
  97. !~ <regular expression>
  98. gives 0 if the if the string expression has a substring matched
  99. by the regular expression, and 1 otherwise.
  100. Actually, any expression can be used to the right of the
  101. operators ~ and !~. awk will convert the
  102. expression to a string and then convert the string to a
  103. regular expression. It does this by replacing the enclosing
  104. double-quotes by forward-slashes, and by interpreting the back-slash
  105. escape character. You have to be careful about this. So, for exampl
  106. $0 ~ /(\+|-)[0-9]+/
  107. is equivalent t
  108. $0 ~ "(\\+|-)[0-9]+"
  109. The advantage of being able to convert strings to regular
  110. expressions is that you can use string variables
  111. Patterns
  112. The patterns occurring in pattern-action statements have the
  113. following possible forms
  114. BEGIN - matches before any input is read
  115. END - matches after all the input is read
  116. <expression> - matches if the expression is true,
  117. i.e. is a nonzero number or a nonnull string.
  118. <regular expression> - matches if the input
  119. line has a substring matched by the regular expression.
  120. This is equivalent to $0 ~ <regular expression>.
  121.  -
  122. a range pattern. It matches each input line from a line matched by
  123.  
  124. to the next line matched by
  125. , inclusive.
  126. The BEGIN and END patterns cannot be combined with
  127. other patterns. Range patterns cannot be part of another pattern
  128. Using awk with other applications
  129. Techwriter/Easiwriter lets you drag Comma Separated Variable (CSV) files
  130. (filetype &dfe) into tables, and I have no doubt that
  131. many other applications have the same facility. I have found this a
  132. very convenient way of displaying data that has been processed
  133. by awk
  134. You create a blank tabl
  135. then drag in the CSV fil
  136. and select it
  137. and format it appropriately
  138. Another method of tabularization, more portable to other platforms,
  139. is to output HTML code for insertion into a web page. Consider,
  140. for example
  141. # tabl
  142. { if (NF > maxlen) maxlen = N
  143.   line[NR] = $0 
  144. EN
  145. { if (NR == 0) exit
  146.   print "<table>
  147.   for ( row = 1; row <= NR; row++) 
  148.    k = split(line[row],data
  149.    print "<tr>
  150.    for (col = 1; col <= k; col++
  151.     print "<td align=left" span(col,k) ">" data[col] "</td>
  152.    if (k == 0) print "<td colspan=" maxlen "></td>" 
  153.    print "</tr>"  
  154.   print "</table>" 
  155. function span(c,k) {
  156.     if (c < k || c == maxlen) return "
  157.     return " colspan=" (maxlen - k + 1) 
  158.       
  159. This converts a file of records with fields separated by spaces to
  160. code for an html table, with colspan attributes to pad the
  161. rows out where there are insufficiently many fields.  Note the
  162. built-in function split. This takes a string as its
  163. first argument and an array as its second. It splits the string
  164. into fields using FS (or its third argument, if it has one),
  165. assigning the i-th field to the i-th component of the array, and
  166. returns the number of components as its value.
  167. If FS is set to an empty string, each character is a separate field.    
  168.      
  169. Any document which is describable by a program, e.g. by HTML or by
  170. ,
  171. is a good candidate for manipulation by awk if you need to
  172. automate the process of producing lots of similar documents.
  173. Mail-shot is the term usually used for this.
  174. You need a file containing what is to be common to all the
  175. documents, the template, and some convention for the
  176. variables in it which are to be instantiated with
  177. different values for each version. We could use words
  178. beginning with @ for these variables, perhaps. For example,
  179. suppose we are producing a set of web pages for an art gallery
  180. to advertise the works of different artists. We want the page
  181. to have the for
  182. <Header>
  183. <Portrait of artist>
  184. <Name of artist>
  185. <Row of three thumbnailed examples of work>
  186. <Titles of the works above>
  187. <blurb about artistic career and biography>
  188. <Links and contact address>
  189. So we will need variables
  190. @portrait, @name, @ex1, @ex2, @ex3, @title1,
  191. @title2, @title3, @blurb. Our template HTML file,
  192. which we call Base might look like this
  193. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
  194.  
  195.  
  196. <HTML>
  197.  
  198.  
  199. <HEAD><TITLE> @name </TITLE></HEAD>
  200.  
  201.  
  202. <BODY TEXT="#000000" BGCOLOR="#FFFFFF">
  203.  
  204.  
  205. <CENTER>
  206.  
  207.  
  208. <H2>The Spider's Gallery</H2>
  209.  
  210.  
  211. <H3>Artists on our books</H3>
  212.  
  213.  
  214. <IMG SRC="@portrait" ALT="Portrait of @name">
  215.  
  216.  
  217. <H4>@name</H4>
  218. <TABLE WIDTH="80%">
  219.  
  220.  
  221. <TR>
  222.  
  223.  
  224. <TD ALIGN=CENTER><IMG SRC="ex1" ALT="Thumbnail of @title1"></TD>
  225.  
  226.  
  227. <TD ALIGN=CENTER><IMG SRC="ex2" ALT="Thumbnail of @title2"></TD>
  228.  
  229.  
  230. <TD ALIGN=CENTER><IMG SRC="ex3" ALT="Thumbnail of @title3"></TD>
  231.  
  232.  
  233. </TR>
  234.  
  235.  
  236. <TR>
  237.  
  238.  
  239. <TD ALIGN=CENTER>@title1</TD>
  240.  
  241.  
  242. <TD ALIGN=CENTER>@title2</TD>
  243.  
  244.  
  245. <TD ALIGN=CENTER>@title3</TD>
  246.  
  247.  
  248. </TR>
  249.  
  250.  
  251. </TABLE>
  252. </CENTER>
  253.  
  254.  
  255. <P>
  256.  
  257.  
  258. @blur
  259.  
  260.  
  261. <P>
  262. <A HREF="mailto:arachne@artifex.com">The Spider's Gallery</A>
  263. </BODY>
  264.  
  265.  
  266. </HTML>
  267.  
  268. Be careful to include newline characters in this file.
  269. Some HTML-producing software tends to write paragraphs of text as
  270. one long line. Different versions of awk may have different
  271. requirements about the maximum length of a line. To describe what
  272. values the variables are going to have we could have a file
  273. Artists of  multiline records of the for
  274. @name Van Strui
  275.  
  276.  
  277. @portrait portraits/VStruik.jpe
  278.  
  279.  
  280. @title1 Lunar conurbatio
  281.  
  282.  
  283. @ex1 thumbs/VStruik/lconurb.pn
  284.  
  285.  
  286. @title2 Frenz
  287.  
  288.  
  289. @ex2 thumbs/VStruik/frenzy.pn
  290.  
  291.  
  292. @title3 Sunset over Uttoxete
  293.  
  294.  
  295. @ex3 thumbs/Vstruik/uttox.pn
  296.  
  297.  
  298. @blurb Van Struik has exhibited in Tampere (1965) and at
  299. Louisiana (<em>Landsbrug, Svinhandel og den
  300. Samfundsbevidste Kunstner</em>, Udstilling 1978)
  301. where his works were responsible for a fundamental
  302. review of the art-funding policies of the day
  303.  
  304.  
  305.  
  306. The example file only contains one record, but you should
  307. imagine that there are lots. Invent your own!
  308. To combine the Artists and Base files to produce
  309. a sequence of output page
  310. Art1, Art2, . . . 
  311. one for each record, we will need an Obey file Create
  312. with a command of the for
  313. mawk -f subst Artists Base Art
  314. where subst is a general awk program that does
  315. macro-substitution, and is quite independent of our choices for
  316. variable names and so on. Here it is
  317. # subs
  318. # ARGV[1] holds macro definitions as multiline records
  319. # The first word in each line is the macro name,
  320. # the rest is the body
  321. # ARGV[2] is the template file
  322. # ARGV[3] is the output file prefix.
  323. # The number of the record is suffixed to it
  324. BEGIN { if ((prefix = ARGV[3]) == "")
  325.            error("No output file name given"
  326.         if ((template = ARGV[2]) == "")
  327.             error("No template file given"
  328.         ARGV[2] = ARGV[3] = "" # Remove from command lin
  329.         while ((getline x < template) > 0)
  330.             line[++n] = 
  331.         close(template
  332.         RS = ""; FS = "\n" }  # multiline record
  333. { for ( i = 1; i <= NF; i++ )
  334.   { split($i,word," "
  335.     sub((m = word[1]),"",$i) # remove first wor
  336.     macro[m] = $i  }         # define macr
  337.   write(prefix NR ,line,n,macro) # outpu
  338.   for (m in macro)
  339.     delete macro[m] # avoid spillovers from previous record
  340.  
  341. function error(s) 
  342. printf("Error from subst: %s\n",s
  343. exit 1 
  344. function write(f,line,n,macro,  i,m,s) 
  345. for ( i = 1; i <= n; s = line[i++] )
  346.   {  for ( m in macro
  347.         gsub(m, macro[m], s) # replace variables by value
  348.      print s > f 
  349.   close(f
  350.   system("Settype " f " HTML") 
  351.        
  352. Note how we set the filetype of the output in the last line of
  353. the  function write.            
  354. Summary
  355. In this article we have dealt briefly with regular expressions
  356. and patterns. We have mentioned how easy it is to display data
  357. in tabular form, either by outputting data in CSV format and
  358. using an application that accepts CSV files, or by outputting HTML.
  359. We have looked at how awk can be used to perform mailshots,
  360. creating, in this case a series of HTML files from an HTML template
  361. and a file of records. The example given is as simple as possible,
  362. involving only substitution of text for variables.  More sophisticated
  363. applications are a matter of using your imagination. The virtue of
  364. awk is that it is possible to sketch out and test prototype
  365. applications with very little code.
  366. Gavin Wraith (
  367.  
  368.  
  369. ÿÿÿÿVOLUME1/ISSUE3/BACKUP/INDEX.HTM Volume 1, Issue 3, Hard disc backup
  370.  
  371.  
  372.  
  373.  
  374. Hard disc backup
  375. David Holden looks at two comprehensive hard disc backup programs.
  376. This is a review of two hard disc backup programs, Hard Disc Companion from Risc Developments, and Hardback, an Open Source Freeware program by Theo Markettos. These are both thoroughly competent applications, and either would probably do all that most people will require. However, although they perform a similar function they do have many differences, both in performance and the user interface, and this gives them a very different 'look and feel'.
  377. Although either program will happily backup to floppy discs I would assume that almost everyone that needs to regularly backup a hard drive will use some other media. Backing up even a 200Mb hard drive to floppies would be incredibly tedious. Almost all my testing was therefore carried out either to another hard drive or to a variety of backup devices, including a Syquest drive and Zip and DataSafe parallel port drives, which are the sort of things that most people would use.
  378. Ease of use is especially important with a hard disc backup program. If it is simple, quick, and pleasant to use then you will use it often. If it’s fiddly and complicated, then the chore gets put off, with obvious consequences if you do have a drive failure. I therefore consider this to be of paramount importance with this type of program.
  379. Common features.
  380. First I shall deal with the features that both programs have in common. To save having to repeatedly use the rather long Hard Disc Companion I shall abbreviate the name of this program to HDC. Both of these programs have the following features;
  381. Fully RISC OS 4 compatible, and cope with E+ format drives with long filenames. Hardback claims to be RISC OS 2 compatible, although I didn’t test this and doubt if many people will need it. HDC would appear to require RISC OS 3.1 or better
  382. Produce full or incremental backups of complete drives, directory structures, or just single files for backing up things like PC partitions
  383. Omit individual files or directories from the backup, or files of specified types, or include only files of specified types
  384. Compress data as it is backed up
  385. Backup to floppy discs, fixed hard drive, or removable media drives like Syquest, Zip, etc
  386. Run from a 'script' file so repeat backups can be easily implimented
  387. Can be set to run unattended at a predetermined time so backups can be run overnight
  388. Can display a filer-like window when restoring and individual or groups of files or directories can be dragged from this
  389. Backup a PC 'partition' either as one large file or backup just the contents
  390. Pause and continue with the backup at any point
  391.  
  392. First impressions
  393. Hardback.
  394. Because hardBack is a Freeware program you would normally receive it in one or more archives totalling around 600K. There are two separate programs, !Backup and !Restore, and the manual is supplied both as plain text and an Impression document. After de-archiving I double clicked on the !Backup application, then clicked on the icon bar icon and the window shown below appeared.
  395.  
  396. Now I wasn’t too happy with this as I have a personal aversion to pane windows, but the purpose of the visible section seemed pretty obvious. I dragged a directory I wanted to back up to the Source icon, and then dragged the directory icon in the Destination box to another hard drive, clicked on Start and the first window closed, the next window opened and we were off; it was as simple as that.
  397. As you will gather by looking at the illustration, the default destination is the floppy drive, but this can be changed.
  398.  
  399. Scrolling down the pane revealed all the various options, and everything seemed pretty obvious.
  400. One advantage that Hardback has is the ability not to attempt to compress certain filetypes. Normally there would be no point in trying to compress files which are already compressed, like ArcFS archives, JPEG, GIF, etc.
  401. Restore was equally simple. When Hardback creates a backup it produces three files on the source drive, one Data file called Backup, which is the actual data, another called KeyFile which is a sort of index that the !Restore program uses, and a script file called Script (of which more later). To do a full restore you just click on the Restore icon on the icon bar, drag either the Backup or KeyFile files to the window that opens and click on OK. Once again, it was all pretty self evident and straightforward. As the !Restore program is separate from the main !Backup application it is possible to put a copy of this with your backup data, which is useful if you want to use HardBack to transport a large file or files between machines on floppy discs.
  402. By default the layout of the icons in the Restore filer window reflects the standard filer setting, ie, Large icons, Small icons or Full info, although you can configure this to a different format if required. This is not a 'true' filing system, however, and although you can drag individual files, directories, or applications out of this window to any other drive they cannot be loaded or run directly from here.
  403. Repeat backups are even easier. If you double-click on the 'Script' file the !Backup program is run and it repeats the backup with exactly the same parameters you set originally. Alternatively you can drag it to the 'Scripts' icon in the window shown above, which gives you the opportunity to alter any of the parameters first if you wish to do so.
  404. Hard Disc Companion.
  405. This arrived on a single 800K disc with an A5 printed manual. The original program seemed to have been written by Graham Jones, but in 1994 development was continued by Adrian Lees.
  406. After copying the program to my hard disc and running it clicking on the icon bar icon produced the window shown below.
  407.  
  408. Again this looked pretty obvious, so I dragged the source directory to the top icon, but then I had to go through a menu system to open another window from which the destination could be defined. Whether this menu system with its many windows is preferable to Hardback’s single window is a matter of opinion, but, even though I normally dislike pane windows, I found it much more convenient to have all the options available in a Hardback's single window.
  409. The backup produced a directory containing an application called !Restore. Double-clicking on this installed it on the icon bar, and when I clicked on this icon it opened a filer-like window from which I could drag the files I wanted to restore. This defaults to Large icons instead of reflecting the current filer setting like HardBack, but it can be changed. One advantage HDC has it that this is a 'real' filing system so applications can be run and files loaded directly from it without the need to copy them to a drive first.
  410. When I looked inside the !Restore application directory I discovered a series of sub-directories in which the backup data had been stored, chopped up into 800K chunks. 
  411. After completing a backup it is possible to save a Config file which enables you to carry out repeat backups.
  412. Both.
  413. Either program would be relatively easy to use. I was able to create a backup and restore it, both completely and individual files, without recourse to the manual. What was apparent from this 'blind test' is that Hardback is probably simpler and more convenient to use than HDC. I’ve no doubt that a regular user would become familiar with th multiplicity of menus and windows, and once your backup procedure has become established you will be able to just re-run them using various Config files, but Hardback did seem to provide a more homogeneous system. I suspect this is because HDC is a slightly older program, and gives the appearance of an application that was originally written to back up to floppy discs, and that the other options have been added on on at various times.
  414. This simplicity of use is probably a consequence of HardBack’s history as Shareware. With Shareware, if the user can’t quickly put the program to work they will give up, and the author won’t get paid, so a good Shareware program is always very easy to set up and use.
  415. Performance
  416. Although both programs have various options and features which affect the time taken for a backup, two things were obvious. Under almost all circumstances HDC is faster than HardBack, but HardBack gives better compression.
  417. At first I thought the speed difference was greater that it actually is, because by default HDC uses the lower and hence faster of its two compression ratios and does not verify data after saving, but Hardback was set to produce a CRC (Cyclic Redundancy Check) which takes longer. However, even when these balances were restored HardBack can take up to 50% longer for a backup than HDC.
  418. The main speed tests were carried out copying to and from IDE hard drives connected to a 'Blitz' IDE interface so that drive performance had the least effect on the time taken. When I carried out the same tests using a parallel port DataSafe drive with its much lower speed the difference was less marked, but HDC was still noticeably faster.
  419. The backup data from Hardback is normally around 85% of the size of that produced by HDC.
  420. I suspect that a lot of this difference is accounted for by the fact that HardBack gives detailed information on screen as it is working, whereas HDC just says whether it is loading or saving the data. I shall have to investigate this because, as Hardback is Open Source, if it does prove to be faster with these messages disabled then I should be able to alter the program to make this possible.
  421. As a 'benchmark' I also carried out each test using ClicBack, the Shareware program from Steve Spry. This fell about midway between the other two in terms of speed, but gave better compression even than Hardback. However, although ClicBack is still in regular use by many people, it has not been updated for some time and I do not know if it is 100% RISC OS 4 compatible, although I had no problems when testing on a RO4 machine.
  422. Manuals
  423. HDC comes with a printed manual. This is A5, around 30 pages, the first third of which consists of copyright messages etc. I got the impression that it may once have been a higher quality offering, but is now mono laser printed and made from folded and stapled A4 80 gsm paper. This is the only documentation provided apart from a list of features and a History file on the disc.
  424. HardBack has its manual both as an Impression document and as a series of nicely formatted text files. The Impression manual is actually A4, with about 40 pages, but I had no difficulty in printing it as an A5 booklet, when the text was still a reasonable size. It was more detailed than the HDC manual, and gave much more technical information about the program. The big advantage of a 'print your own' manual with a program like this is that once you have the program up and running you may not need to refer to the instructions until you want to change some aspect of your backup procedure, perhaps many months later, by which time (if your filing system is like mine) the manual is probably buried somewhere under that huge heap of stuff in the corner! With HDC you can just print another copy, and you can also search the file for the subject you are interested in, which can be a lot quicker and easier than looking through the printed version.
  425. Pro’s and Con’s
  426. Although both programs work well, they each have advantages and disadvantages.
  427. HardBack advantages.
  428. Simpler user interface. Quicker and easier to get to grips with
  429. Better compression
  430. Better documentation
  431. Open Source so you can modify and improve it if you wish (and are knowledgeable enough to do so)
  432. Much lower cost. In fact, nothing
  433.  
  434. Hard Disc Companion advantages.
  435. Faster
  436. Restore window is a 'real' filing system
  437.  
  438. Because of the Open Source nature of HardBack it is possible that there will be a lot of further development of this program.
  439. Conclusions
  440. Normally in a comparative review of this type is would be usual for the reviewer to express an opinion as to which program is best, and which the reader would be better advised to buy. Fortunately in this case there is no need for me to do this. There is only one possible recommendation that I could make; get a copy of HardBack and try it. It won’t cost you anything, you can download the latest version from Theo Markettos’s web site at www-stu.cai.cam.ac.uk or try the copy we have provided in the SOFTWARE directory on this issue of RISC World. If it does all that you want, then you need look no further and spend no more.
  441. However, if after trying HardBack you decide that you require the extra speed of Hard Disc Companion or feel you need to be able to run or load files directly from the restore window then you can obtain a copy from:
  442. BEEBUG Ltd.
  443. 7U St. Albans Enterprise Centre
  444. Long Spring
  445. Porters Wood
  446. St. Albans.
  447. AL3 6EN
  448. Phone  01727 840 303
  449. The program costs £23.50. Upgrades from earlier verions cost £7, but you must return the original disc. In either case add £2.20 carriage UK, £4.30 elsewhere.
  450. David Holden
  451.  
  452.  
  453. ÿÿÿÿVOLUME1/ISSUE3/BEGINPRG/INDEX.HTM Volume 1, Issue 3, Programming for non-programmers
  454.  
  455.  
  456.  
  457.  
  458. Programming for non-programmers
  459. David Holden introduces yet more complex variables in the third instalment in the series on programming.
  460. Part 3 - Arrays
  461. I have previously described Real, Integer and String variables, but it often happens that you have lots of variables of the same type, and it would be extremely tedious, as well as wasteful of space and slow, to create a separate named variable for each item. Basic, in common with most other programming languages, has a way of joining a series of similar variables into a structure called an array.
  462. Arrays, like ordinary variables, can hold integers, strings or real numbers. In fact, there's a fourth type of array that you can use with BBC Basic, the byte array, but I'll leave that until later. To create an array you use the keyword DIM, which is short for DIMension, and the array type is defined by the form of the variable name you assign to it as with other variables. Unlike single variables, arrays must be defined before they are used, and when you define them you have to specify the number of elements you want the array to have, which is how many variables you want the array to hold. For example, to create an array to hold ten integers you would use -
  463.     DIM numbers%(10
  464.  
  465. Each element in the array is then addressed using the array name followed by the element number in brackets, for example -
  466.     numbers%(4) = 23
  467.     numbers%(6) = 23 + 
  468.     PRINT numbers%(4
  469.  
  470. and so on.
  471. Creating arrays of real or string variables is done in exactly the same way, for example -
  472.     DIM string_array$(8
  473.     DIM numbers(147
  474.  
  475. Experienced programmers will have realised the deliberate mistake earlier. When you create an array, it will actually have one more element that the number used because it also has a zero'th element. So -
  476.     DIM number%(10
  477.  
  478. really creates an array of 11 integers, addressed as number%(0) to number%(10). Quite often it is more convenient to simply ignore the first element so that the index is always a positive number, but you should be aware that it exists.
  479. As you might expect, you can use an element of an array anywhere in your program where you could use a 'normal' variable. Similarly the index does not have to be a simple number but can be a variable or an expression.
  480.     result% = numbers%(4*5
  481.     index% = 
  482.     result% = numbers%(index%
  483.  
  484. So far all these arrays have been of the type known as one dimensional, but arrays in BBC Basic can be multi dimensional. These are sometimes referred to as matrix arrays, and can be thought of as a sort of grid, where each element is addressed by it's co-ordinates. This analogy can become a bit strained when you realise that a multi dimensional array can have many dimensions and is not constrained by the geometrical limit of three.
  485. As an example, suppose you wanted to create an array to hold a list of people's names, surnames and forenames. You could use -
  486.     DIM forename$(100
  487.     DIM surname$(100
  488.     forename$(6)="Fred
  489.     surname$(6)="Smith
  490.     PRINT forename$(6)+" "+surname$(6
  491.  
  492. Alternatively a more elegant approach might be -
  493.     DIM name$(100,2
  494.     name$(6,1)="Fred
  495.     name$(6,2)="Smith
  496.     PRINT name$(6,1)+" "+name$(6,2
  497.  
  498. In either case the last line would print 'Fred Smith"
  499. To make the example clearer I used 'DIM name$(100,2), but in reality this would be extremely wasteful of space. This would allocate spaces for 303 strings, not 200. Although it is common to ignore the '0' index when using a single dimensional array, it is extremely wasteful with a multi-dimensional array. The more efficient way to do this would therefore be -
  500.     DIM name$(99,1
  501.     name$(5,0)="Fred
  502.     name$(5,1)="Smith
  503.     PRINT name$(6,0)+" "+name$(6,1
  504.  
  505. It will be worth your while thinking about this, bearing in mind that arrays begin with Element 0, and making sure you understand how it really gives an array of 2 x 100 elements.
  506. Some programming languages, including some variants of Basic, but not BBC Basic, support a special type of array in which each element is called a Record. Briefly, this is a system where each element of the array is made up of a group of variables, which may be of different types. As you can imagine, this is ideally suited for creating database applications.
  507. The byte array
  508. This is not an array like those previously described. It is a way of reserving a block of memory within the program's workspace. Data of various types can be placed in this block or read from it. Other variants of Basic use the keywords PEEK and POKE to do this, but BBC Basic has a much more powerful system called indirection operators.
  509. It is quite possible to write complex programs without ever using or needing byte arrays, and I could ignore the byte array for the present, but there is a very good reason why I am introducing it at this stage. Programs need to communicate with the computer's operating system (OS), and to do this it is often necessary to pass data back and forth. As the OS will not be able to access the program's variables directly the data must be passed in a block of RAM, and the best way to do this is to use a byte array. It is therefore a good idea to familiarise yourself with their use as soon as possible.
  510. A byte array is created in a similar way to other arrays, using the DIM keyword, but the syntax is slightly different. To reserve an array of 1000 bytes of memory you would use -
  511.     DIM array% 100
  512.  
  513. You should immediately notice one difference from previous arrays; there are no brackets. This is because we have not created an array in the normal sense, just reserved 1000 bytes of RAM. The variable array% is not the array itself, it is just a normal integer variable. When memory is allocated for the array, Basic stores the address of the start of the RAM it has reserved into this variable, so it becomes a pointer to this RAM. The first byte is at the location array%. You can therefore see that although array% is just like any other integer variable it is important for you not to change it or to allow it to become changed or it will no longer point to the start of the reserved RAM. Note that the last byte of this array will not be at array% + 1000 but at array% + 999 because the first byte is at array% + 0.
  514. Before I describe exactly how data is stored and retrieved from a byte array I will have to explain little bit about how the computer's RAM is arranged and addressed. As you will probably be aware, RAM is organised into bytes, and each byte is made up of 8 bits. A byte is quite small, and can only hold a number with a value of from 0 to 255. Now the Risc processor in a RISC OS computer is a 32 bit processor, and so it naturally works with data in 32 bit or 4 byte 'chunks'. These 4 byte chunks are called words.
  515. The term word is slightly ambiguous. In the days of 8 and 16 bit computers it was normally used to mean two bytes, or 16 bits, and the expression long word or double word was used to refer to a group of four bytes or 32 bits. However, all modern computers are (at least) 32 bit, and so the term is now commonly employed to refer to 4 bytes, which is how I shall use it throughout this series.
  516. A Basic integer variable is stored in a 4 byte word, and as this can be held in a single register in the Risc processor it can be manipulated very quickly, which is the main reason why integer variables should be used wherever possible.
  517. In Part 2 I said that an integer can be a positive or negative number, with a range of from -2,147,483,648 to +2,147,483,647. The reason for these rather strange numbers is that the integer is stored in a 4 byte word, but there has to be a way of telling whether it's a positive or negative number. Basic does this by using bit 31 (the 'top' bit) as a flag. If this bit is set, the number is negative, if not, it's positive. So, although the number is stored in 32 bits, only 31 of them are used to hold the actual number. The reason why the biggest negative number can be one more than the biggest positive number is because the positive 'count' starts at 0 whereas the negative 'count' starts at -1. None of this is of any great importance to the programmer unless you are trying to store very large numbers in an integer variable. If you try to store a number bigger than 2,147,483,647 some very surprising things will happen because bit 31 will become set and your big positive number will suddenly become a totally different negative number!
  518. There are four indirection operators that can be used to store data in memory. These are -
  519. ? to store a byte or characte
  520. ! to store a word or intege
  521. $ to store a strin
  522. | to store a floating point numbe
  523.  
  524. The syntax for storing data in memory using indirection operators is -
  525.     <indirection operator><address> = <data>
  526.  
  527. and to retrieve it -
  528.     <data> = <indirection operator><address>
  529.  
  530. Naturally the data type must match the indirection operator used. The same rules apply to indirection operators as to other numeric variable types, so if you try to store a real number using the '!' word operator it will be truncated to an integer.
  531. Now for some examples. Let's assume that you have created a byte array or 1000 bytes exactly as described above using -
  532.     DIM array% 100
  533.  
  534. To store an integer number 4567 at the start of this array you would use -
  535.     !array% = 456
  536.  
  537. or if it was a Basic integer variable 'number%' -
  538.     !array% = number
  539.  
  540. To retrieve the data and 'read' it back into a variable -
  541.     number% = !array
  542.  
  543. The same system can be used with strings, for example -
  544.     $array% = "This is a string
  545.     name$ = "Fred
  546.     $array% = name
  547.     another$ = $array
  548.  
  549. It may help you to better understand how indirection operators work if you think of them like this;
  550. !array% means the word located at the address in RAM pointed to by array%
  551. $array% means the collection of characters that make up a string located at the address in RAM pointed to by array%
  552.  
  553. The pointer to the place you want to put or retrieve the data from can be an expression. In fact, it would normally be an expression, as you would not just want to put data at the start of the array. If it is an expression then the expression must be enclosed in brackets.
  554.     !(array%+4)=number
  555.     $(array%+200)="Fred Smith
  556.     index%=20 : !(array%+index%)=number
  557.     number%=!(array%+index%
  558.     number%=!(array%+(index%*4)
  559.  
  560. When using the '!' or '?' operators it is possible to simplify the base + offset system by putting the operator between the two numbers.
  561.     array%!index% = number
  562.     array%!(index%*4) = number
  563.  
  564. is equivalent to 
  565.     !(array%+index%) = number
  566.     !(array%+(index%*4)) = number
  567.  
  568. Remember that you can only do this with byte and word operators, not with string or floating point.
  569. In fact, you can do almost anything with this type of data that you could do with a 'normal' Basic variable. For example -
  570.     array%!4 = 65
  571.     array%!8 = 156
  572.     array%!12 = array%!4 + array%!
  573.     number% = array%!4 + 2
  574.     array%!4 = array%!4 + 20
  575.     PRINT array%!
  576.  
  577. Array boundary checking
  578. If you try to address an element of an array that doesn't exists, for example, if you create an array with 20 elements and try to store something in element number 22, then Basic will generate a Subscript out of range error. This will not happen with a byte array. If you create a byte array of 100 bytes and then try to store an integer at an address 120 bytes after the start of the array Basic will do exactly that. Unfortunately this will probably be disastrous. Your number will be stored 20 bytes after the end of the 'safe' allocated RAM, probably overwriting another variable or some other important part of Basic's workspace. The result might not be immediate catastrophe, but sooner or later your program will almost certainly crash with an apparently unconnected error. It is therefore absolutely vital that when you use a byte array you make sure that you always keep within its boundaries. If in doubt, make the array a bit bigger than strictly necessary to allow for slight 'overruns'.
  579. Initialising arrays
  580. When an array, but not a byte array, is created every element is set to zero or, in the case of a string array, to an empty string. With a byte array there is no actual creation process, Basic merely sets aside the required number of bytes of RAM, and so this RAM will contain whatever random data it happened to have. 
  581. It is possible to set every element of an array to any chosen value. This is done by using -
  582.     <array name>() = <value>
  583.  
  584. Note that this is just the same as the method used to assign a value to a single element of an array except that the brackets are empty. For example -
  585.     numbers%() = 10
  586.  
  587. would set every element of the integer array numbers% to the value 100.
  588.     names$() = "
  589.  
  590. would set every element of the string array names$ to a null string. It does not matter whether the array is single or multi dimensional, every element will be set. If you want to set part of an array or a byte array you will have to use another method.
  591. The FOR NEXT loop
  592. I have previously described one way of making Basic operate in a loop, the REPEAT - UNTIL structure. There are, in fact, two other types of loop, and one of the most useful is FOR - NEXT. It is also the fastest, so it is the best to use for things like setting multiple elements of an array to a value.
  593. The structure of the loop is -
  594.     FOR <variable> = <number> TO <number> [STEP 
  595.       (code to be executed
  596.     NEX
  597.  
  598. The main feature of the FOR NEXT loop is that it is executed a fixed number of times instead until a certain condition is met. For example, to set elements 20 to 30 of the integer array 'number%' to zero -
  599.     FOR count% = 20 TO 3
  600.     numbers%(count%) = 
  601.     NEX
  602.  
  603. If, as in this case, the STEP keword is omitted then the loop counter, which in this case is the variable count%, will increment in single steps. The code above is therefore exactly equivalent to -
  604.     FOR count% = 20 TO 30 STEP 
  605.     numbers%(count%) = 
  606.     NEX
  607.  
  608. The loop counter does not have to move in positive steps, they can be negative, so the same result would be obtained by -
  609.     FOR count% = 30 TO 20 STEP -
  610.     numbers%(count%) = 
  611.     NEX
  612.  
  613. Although the loop counter must obviously be a number or a numeric variable, the upper and lower limits can be numbers, variables, or expressions. All that really matters is that they can be evaluated to numbers. For example, our previous loop could have been written as -
  614.     start% = 2
  615.     end% = 3
  616.     FOR count% = start% TO end
  617.     numbers%(count%) = 
  618.     NEX
  619.  
  620. The strict syntax of Basic specifies that the loop variable that the NEXT keyword applies to should appear after the word, so in all the previous examples the last line should be -
  621.     NEXT count
  622.  
  623. You can do this if you wish, it sometimes helps to make the code easier to read with very complex structures having lots of FOR NEXT loops as you can see which NEXT is related to a FOR. However, as FOR NEXT loops should never overlap there is no structural reason to do this.
  624. Althoughwe haven't done much actual programming in this session we've covered some very important topics. You should therefore have plenty of new things to try out for yourself, which is what this series is intended to encourage you to do.
  625. David Holden
  626.  
  627.  
  628. ÿÿÿÿVOLUME1/ISSUE3/CVS/INDEX.HTM Volume 1, Issue 3, CVS
  629.  
  630.  
  631.  
  632.  
  633. Working in Sync
  634. Paul Webb looks at the Concurrent Version System tool.
  635. Introduction
  636. In a situation where the management of large and collaborative development projects is becoming the norm, RISC OS users will have increasing need of an effective project management tool.
  637. Fortunately, help is at hand in the shape of the Concurrent Version System (CVS) tool which is available as a port by John Tygat.
  638. Background
  639. CVS is generally thought of as a tool which is only of use to software developers whereas the program may also be used to manage projects involving website creation or some form of technical writing.
  640. CVS is also very useful for developers who wish to keep a record and repository of a project at various stages in its inception. This facility is invaluable both for debugging purposes and for reverting to a version  which, on reflection, is considered to be superior to the current version. In a similar vein, CVS allows project participants to make changes to the same part of a document or program concurrently. Indeed, CVS's ability to deal with concurrent edits is one one of its more powerful features which sets it apart from alternative management tools like the Revision Control System (RCS) or the Source Code Control System (SCCS). Finally, CVS may be used on a standalone machine as well as over a network and is available for a range of platforms including Windows, Mac and the various flavours of UNIX. There is even a JAVA client which can be obtained from www.ice.com/java/jcvs/.
  641. The CVS Process in a Nutshell
  642. The RISC OS port of CVS can be obtained from http://gallery.uunet.be/John.Tygat/cvs/ . The program can either be run as a command line utility or via the more customary GUI. Figure one shows CVS running from a TaskWindow whilst Figures Two and Three provide some indication of the facilities which are available in GUI mode.
  643. Figure 1
  644. Figure 2
  645. Figure 3
  646.  
  647. In common with any complex tool, mastering all of the program's features can seem daunting but an understanding of a restricted range of its capabilities is sufficient to the task of getting started with the program. Assuming that a repository which holds the master copy of the project has already been created by the project maintainer, a hypothetical CVS session involving two writers might proceed as follows:
  648. Writer A withdraws or checks out a working copy of the project from the repository or library.
  649. Writer A can then begin work on the project. This may involve adding new material, deleting some of the existing material or re-organising the document's structure. Whatever writer A does, CVS is up to the task of monitoring any changes.
  650. Writer A then decides to terminate the session and consequently 'commits' or 'checks in' the working copy into the repository together with a 'log' of what has been done during that session.
  651. In a situation where writer B is working on similar parts of the document, committal of B's copy may result in what is known as a 'conflict'. If this occurs, the onus will be on B to resolve any conflicts before the process can be resumed. Thus CVS actually encourages co-workers to talk to each other about the project before further progress can be made!
  652. The changes are then applied to both A and B's working copies.
  653.  
  654. So you should now have some appreciation of the basic CVS process in action together with an awareness of key CVS terms lke checking out, committal and so forth. Indeed, it is important to realise just how much more versatile CVS is in comparison with the Revision Control System or the Source Code Control System. RCS users have for example to unlock a file before releasing it to other users. This approach is problematic where a team of developers wish to work on the same parts of a project simultaneously. CVS is therefore aptly named as it allows for true concurrent working.
  655. A Step by Step Guide
  656. If you intend to work with the command line version of CVS, the procedure is described below. Irrespective of your intentions, CVS usage essentially involves employing the same syntax which is as follows:
  657.     *cvs <cvs command>
  658.  
  659. In common with most UNIX-derived tools, each command can take a combination of switches which may be global or command specific. The phrase 'cvs' will therefore be followed by range of keywords like import, update, diff or commit. You may not have encountered the import command before but it is basically used to import a project into a repository. So working with CVS as a project participant is not that difficult but there are a few features of this port which may puzzle seasoned RISC OS users. Because of CVS's UNIX pedigree, files and directories are identified by unixified file and directory naming conventions. Thus a repository on a SCSI HardDisc would be created - as John Tygat suggests - with the first of the two commands which are listed below.
  660.    cvs -d :local:/SCSI::MyHardDisc/$/cvs/cvsroot ini
  661.    cvs -d :local:SCSI::MyHardDisc.$.cvs.cvsroot ini
  662.  
  663. A Simple Example
  664. So that's the whirlwind tour of CVS completed but what about an example which illustrates some of CVS's power? Suppose that we have created the following piece of C code which, for the sake of argument, we have called HiRisc:
  665. voi
  666. main(
  667.  
  668.   printf("Hello RISC World Readers!\n")
  669.  
  670.  
  671. If we adapt the file slightly by adding a line to the program then the program listing would read as follows:
  672. voi
  673. main(
  674.  
  675.   printf("Hello RISC World Readers!\n")
  676.   printf("And hello to all RISC OS users\n")
  677.  
  678.  
  679. And if we apply CVS's 'context diff' facility to both files then the program generates the following output. Note that '-' or '+' respectively denote deletions or additions.
  680. main(
  681.  
  682.  printf("Hello RISC World Readers!\n")
  683. + printf ("And hello to all RISC OS users\n")
  684.  
  685.  
  686. Clearly therefore, CVS users have at their disposal a truly marvellous facility which is a Godsend when managing large projects. Of course, for the sake of readability, the output from this example has been ruthlessly edited but interested readers should find out about 'hunks' - a technique which CVS uses to identify diffs across a range of text.
  687. Of course, CVS can be used just as effectively from the GUI interface althoug
  688. there will be an inevitable loss in functionality. If working with CVS in thi
  689. way the user must first set up a New Project which can be done from the 'Ne
  690. Project' window (Figure Two). The various CVS actions can then be activate
  691. from the 'CVS Action' Window (Figure Three). As if this were not enough, th
  692. interface also allows the user to set a range of options like communication compressio
  693. which makes zip compression available when in pserver transport mode.
  694. Obviously, this article has only scratched the surface of what is possible with CVS but RISC OS users are also able, if they so desire, to access repositories over networks using the :server and :pserver transports although Acorn's internet stack v5 will be required.
  695. Resources
  696. The URL for CVS has already been alluded to in this article but you will also need a few other uilities in order to get started with CVS including RISC OS 3.1 or above. The program also makes use of filenames in excess of ten characters which means that you will require Richard Atterer's raFS from http://informatik.tu-muenchen.de/~atterer/riscos.html or Jason Tribbeck's LongFiles from www.tribbeck.com in the absence of RISC OS 4. CVS similarly requires a current version of the Acorn Toolbox Modules which are available from RISCOS Limited's website at www.riscos.com/devsupport/public.
  697. Insofar as instructional material is concerned, there is little need to lay out hard cash in order to achieve CVS mastery. An on-line manual which is known to CVS aficionados as the 'Cedarqvist' is for example available in TeXinfo format from www.loria.fr/~molli/cvs/ and may be processed with armTeX and the TeXinfo macros. Moreover, the book Open Source Development with CVS is largely available for free from www.cvsbook.red-bean.com/ with the exception of a few chapters in HTML, Info, PostScript and TeXinfo formats. Indeed, this book is supplied with the RISC OS port as is a very informative document by the port author which describes how CVS on our platform differs from its UNIX predecessor.
  698. There are also a variety of news groups which are pertinent to this program including gnu.cvs.help, gnu.cvs.bug and comp.software.contg-mgmt. In addition, the official CVS website at www.cyclic.com/cvs/ also contains a wealth of information. Finally, PC Card users can also make use of the CVS Windows port whilst both Windows and ARMLinux users can use Emacs and the special emacs interface pcl-cvs. Emacs for Windows 95 and NT is available from www.tardis.ed.ac.uk.
  699. Signing Off
  700. So just how useful is CVS? In a word, it's indispensable regardless of whether it's used for record-keeping or for project collaboration. There is lttle doubt that writing software, web pages and technical documents in a collaborative context is an intensive and error-prone process unless each co-worker is exceptionally well organised. CVS provides one possible solution to this situation so why not check it out
  701. Paul Webb
  702.  
  703.  
  704. ÿÿÿÿVOLUME1/ISSUE3/DISC/INDEX.HTM Volume 1, Issue 3, Disc World
  705.  
  706.  
  707.  
  708.  
  709. Disc World
  710. What's also on this CD-ROM?
  711. This CD-ROM contains a number of utilities and pieces of software to accompany the articles in the magazine
  712. There are three utilities to help you read this disc. These can be found in the UTILITIES directory:
  713.  A file-only copy of Fresco, to display the HTML. This will only run if you don't already have a copy of Fresco installed, so that it won't overwrite your cache
  714.  ArcFS, which can be used to read some of the archived software on the disc
  715.  SparkPlug, an alternative de-archiver which can also read Zip files
  716.  
  717. Other software
  718. Several of the articles in the magazine have accompanying software. For your convenience this is placed in archives in the SOFTWARE directory and includes
  719.  The !mawk interpretter and examples from Gavin Wraith's article on AWK programming
  720.  !Riscster and !Wheel from Alasdair Bailey's PD review
  721.  The utilities described in John Woodthorpe's Portable World column
  722.  The complete Hardback hard disc backup program described in David Holden's review
  723.  A little utility from APDL to measure the clock speed of your Strong ARM processo
  724.  
  725. Usenet archive
  726. Also included on the disc in the USENET directory is an archive of the comp.sys.acorn.* newsgroups. These are stored in a special read-only version of Messenger Pro which will allow you to view the messages, but nothing more complicated. The archive is presented 'as is', and RISC World doesn't make any guarantee about the usefulness, relevance or acceptability of any information contained in it.
  727.  
  728.  
  729. ÿÿÿÿVOLUME1/ISSUE3/LETTER/INDEX.HTM Volume 1, Issue 3, Letters
  730.  
  731.  
  732.  
  733.  
  734. Letters
  735. Aaron Timbrell of iSV Products takes us to task for some mistakes in the review of DrawWorks in Issue 2
  736. Aaron Timbrell of iSV Products has written to say that he considers there were some errors in the review of the DrawWorks Millenium CD in Issue 2 of RISC World. To make sure that people aren't put off buying this excellent product we have decided to let him explain where he thinks our reviewer got it wrong.
  737. In each case there is a quote from the review followed by Aaron's comments.
  738. All the manuals are in electronic format which is good from the point of view of keeping them together with the software, but you can only have one manual loaded at a time..... 
  739. In fact you can load more than one manual at once. You can have the Mr Clippy, Typography, Dr Fonty and DWM manuals all loaded at the same time.
  740.  
  741. For the most part I can understand the part about having to select parts of an image to apply something to, but it gets a bit wearing sometimes to have an error box pop up all the time, especially for some tools like the print preview. You can emulate printing on, say, yellow paper which is a good thing, but surely if you're printing you're mainly going to be printing the whole page?
  742.  
  743. To select the whole page just press <CTRL A> then click on the print preview tool. Using <CTRL A> is covered in the DWM manual.
  744.  
  745. Importing foreign file formats is a good thing; however, the importer says it can't import Drawfiles or Sprites - which are handled natively in Draw - which seems a little lazy when they could have been passed straight through to the main program.
  746.  
  747. The foreign file importer is just that, an importer for foreign files! You can just drag a drawfile or sprite directly into the draw window.
  748.  
  749. Many of the other applications on the CD are inflicted with the same lack of taste - Mr. Clippy the clipart manager is so bad (beige-yellow with cyan swirls) that I think that even the programmer was put off enough to add an option to switch it off, but no such luck here.  All of this is particularly ironic given that they're part of a design package, you really have to look past the design and try to concentrate on the content.
  750.  
  751. You can select to have normal "John Major" grey windows or the fun and funky ones. If the reviewer doesn't like the funky windows that's fine, but you do have a choice.
  752.  
  753. I've already touched on the rather dire default colour scheme of the clipart previewer Mr. Clippy, so I'll just warn you that it sings to you when you start it up. Yes, that's right, sings. It's amusing the first couple of times, but gets tired real fast and I can only imagine what it would be like with a whole classroom full of computers doing it. You can't turn it off,
  754.  
  755. Of course you can turn off the singing when Mr Clippy starts.
  756.  
  757. The main package might add some fine bells and whistles, but in the end you're still stuck with the interface of Acorn's Draw, with all its annoyances in selecting items near other items and the like, and adds a few of its own.
  758.  
  759. Selecting objects near other objects is actually quite easy in Draw. If you have a stack of objects on top of each other just keep double clicking and each object will be selected in turn down the stack!
  760.  
  761. With a few reservations on the interface design and so on (for some reason on my 40MB machine the memory allocation went a little screwy and the electronic manual sometimes ended up taking about 28MB of memory, DWM often snatching a further 2MB or more)
  762.  
  763. The reviewer must have been using RISC OS 4 and there is a patch for this problem on our website.
  764.  
  765. ....would serve the needs of a hard up student or school quite well.
  766.  
  767. DrawWorks offers a large number of professional level features that are unavailable in any other package. I think the reviewer has completely missed the point of DrawWorks. Its aim is to produce artwork quickly and with the minimum of fuss, it is not designed to do complex six colour separations, although it does handle spot colour and CMYK separations.
  768.  
  769.  
  770.  
  771.  
  772. ÿÿÿÿVOLUME1/ISSUE3/MAGS/INDEX.HTM Volume 1, Issue 3, RISC OS Magazines
  773.  
  774.  
  775.  
  776.  
  777. Magazine roundup
  778. David Bradforth gets out there to see what's on offer in print for the RISC OS user.
  779. If you are a regular user of a Windows PC, you're probably familiar with magazines such as PC Home, PC Answers and Windows Made Easy. Regular Macintosh users are more likely to be familiar with MacWorld and MacFormat, both of which appeal to a similar - yet somewhat different - type of reader; with MacFormat appealing to the masses, and MacWorld being more of a professional slant.
  780. If you go by the newsstand magazines, Acorn users have just two choices: Acorn User or the mighty Computer Shopper. Computer Shopper isn't of relevance for a large part, as there are just two pages a month for the Acorn user (and also similar for Mac, Amiga and ST users). But what you may not be aware of is the availability of a large number of subscription-based magazines, catering for all aspects of the market.
  781. In this article, we shall highlight each magazine; offer a brief description and provide contact details; should you decide to add a subscription to that title to your RISC World subscription.
  782. Acorn User
  783.  Publisher: Tau Press Limite
  784.  Tel: 0161 429 890
  785.  Email: enquiries@acornuser.com
  786.  
  787. Acorn User was launched in 1982 by Addison Wellesley, whom I believe are now a part of the global Pearson company. The original brief was simple: there were thousands of people out there with Acorn Atoms and BBC Model A's: something was needed which offered support to those very users.
  788. To all intents and purposes it was very succesful; indeed I can remember the December 1991 issue which reached [a record] 230-odd pages... including 32 pages of games coverage, itself a major achievement for the Acorn platform and gamers within.
  789. Around the time of the BBC Model B's release, two indivuals came together to found Redwood Publishing; an independant publishing company which would henceforth take on the publication of the magazine. This went on well until 1993, when Redwood decided to expand on the contract publishing side of the business; and the magazine was sold to IDG Communications Limited.
  790. So we get to the year 2000. Current editor Steve Turnbull led a management buyout of the magazine in late 1998, in order to guarantee a long term survival for the magazine. A decision was made to scrap cover discs in favour of CD-ROMs [which seem to prove popular] and there's a constant stream of vary positive information published in every issue.
  791. Acorn User is the only newsstand publication dedicated to users of RISC OS computers. It's priced at £4.20 per issue, with subscriptions starting at about £16.00. For full details, contact Tau Press Limited on the above number, or by email.
  792. Archive
  793.  Publisher: Archive Publication
  794.  Tel: 01603 44177
  795.  Email: sales@archivemag.co.uk
  796.  
  797. Archive first appeared around 1987 - the launch of the A305. Editor Paul Beverley noticed that Acorn's new creation had a great deal of potential for enthusiasts; and hence Archive was born: a magazine written by enthusiasts, for enthusiasts. Up until 1991, Archive was produced using a Macintosh; but as soon as Impression became available - and the machines were deemed to be capable - production switched to RISC OS.
  798. The format of Archive is simple enough: users submit articles on topics which interest them, which are then published to the benefit of other users. And nobody - except, perhaps, Paul (although we'll forgive that) - gets paid for it.
  799. There's no colour, but with a magazine of this type it doesn't really need it. All we can really say is thanks for going so long Paul, and we hope you'll keep it up!
  800. Acorn Publisher
  801.  Publisher: Akalat Publishin
  802.  Tel: 01582 88161
  803.  Email: akalat@kbnet.co.uk
  804.  
  805. Back in 1994, Mike Williams found himself in the position where he needed to decide what to do next. Thankfully, Acorn Publisher - the only Acorn magazine devoted to a specific topic - was born.
  806. If publishing and design - either in print or via new media - is your thing, Acorn Publisher has something to offer you. With regular articles on DTP, vector graphics, bitmap graphics, makeovers, and more if you're even slightly interested (especially now that Computer Publishing has closed) - we'd recommend this to all.
  807. We shall, for the moment, leave this here. Next time, I'll conclude by going a little further in depth into some of the above; plus looking back nostalgically at some now dearly departed friends.
  808. David Bradforth
  809.  
  810.  
  811. ÿÿÿÿVOLUME1/ISSUE3/MYTHS/INDEX.HTM Volume 1, Issue 3, RISC OS 4 Myths
  812.  
  813.  
  814.  
  815.  
  816. RISC OS 4 Myths
  817. Aaron Timbrell dispells a few myths and rumours about RISC OS 4.
  818. Over the last few months I have heard some amazing things about RISC OS 4. At the Acorn South East Show I had many potential users say that they would like RISC OS 4 (RO4) but some of the things they had heard had put them off. So here are some of the more common myths about RO4, and the real truth.
  819. You need to have it installed by an approved installer
  820. No. RO4 can be installed by anyone. If you can fit a StrongARM card then you are more than qualified to fit RO4 yourself. The only reason for going to an approved installer is that if your machine is less than 12 months old you will void the warranty by opening the lid and fitting the new OS.
  821. RISC OS 4 is difficult to install
  822. Again not true. Installation involves simply running the !Install program on the supplied CD. This backs up your original !Boot sequence and then installs the new OS4 !Boot, applications and resources. Once this has been completed you just have to shut down the machine, open the top, change the two ROM chips on the motherboard and turn the computer back on with the delete key held down.
  823. But I don’t feel confident to install it, so I am going to have to pay an approved installer lots of money to do it for me!
  824. Well if you want to get an approved installer to fit the upgrade then you can. RISCOS Ltd even include a rebate voucher with RO4 that can be redeemed by the dealer who is fitting the upgrade for you.
  825. You need a Strong ARM processor to use RISC OS 4.
  826. No, any of the processors that were fitted to RiscPC computers can be used with RO4. This includes ARM610, ARM 710 and of course StrongARM processors. People are amazed at the speed increase when running RO4 on their 610/710 processor cards. Users may remember that when the ARM 710 was released it cost more than RO4 does now, and offered less of a speed increase.
  827. But I have to re-format my hard disc don’t I?
  828. RO4 will work perfectly well using an old format hard disc. You do not have to re-format your hard disc unless you want to use long file names. Indeed my personal machine runs RO4 on a hard disc that was originally formatted on RISC OS 3.7 over 3 years ago. In fact I often recommend to people that they do not re-format the hard drive until they have a need for long file names or more than 77 files in a directory.
  829. Ah, but I will need a much bigger new hard disc costing lots of money!
  830. No,  any RISC PC computer, even those built right back in 1994, have a hard disc big enough to fit RO4 without any problems. If your hard disc is full then you could buy a newer, faster and bigger one for well under £100. Of course then you could format the new hard drive for use with long file names. By connecting both drives to the IDE interface in the computer you could copy your files from one drive to another. However don’t forget that the new RO4 disc format is much more efficient than the older E format. You may find that after you have installed RO4 you actually have more free hard disc space then you did before!
  831. All my old software won’t work any more.
  832. Rubbish! With very very few exceptions if a piece of software runs on a Strong ARM machine with RISC OS 3.7 then it will work on RO4. Even many older applications work fine. This even includes Acorn Advance. Indeed many programs that were originally written for RISC OS 2 will run perfectly, only a lot lot faster, on RO4.
  833. All very well, but it’s expensive, isn’t it?
  834. The all inclusive price with VAT and carriage is just £120. This not only includes RO4 but also a host of bundled applications including !Writer from Icon technology, !ImageFS2 from Alternative Publishing, !Organizer from Chris Morrison and !Vector from 4Mation. If you were to buy this software at the full rrp it would come to more than the cost of RO4! Of course users of machines on other platforms would easily pay more than £120 just for the speed increase RO4 offers.
  835. What about future development?
  836. RISCOS Ltd and PACE are committed to continually developing RISC OS as are software and hardware developers. You only have to look at recent developments from companies such as Castle, RiscStation and the planned Millipede machine to see that there is a future for RISC OS computers. Software developers are continuing to release new and updated products which in the future may well require RO4 for some features to be available. 
  837. Of course older versions of RISC OS still work very well, but RO4 is the future. Do you want to be left behind? If not contact your nearest dealer and ask about RISC OS 4 or check out the RISCOS Ltd website at www.riscos.com
  838. Aaron Timbrell
  839.  
  840.  
  841. ÿÿÿÿVOLUME1/ISSUE3/NUTSHELL/INDEX.HTM Volume 1, Issue 3, Nostalgia World
  842.  
  843.  
  844.  
  845.  
  846. Nostalgia World
  847. Were you a RISC User subscriber? David Bradforth was, and here - with the help of the RISC User: In a Nutshell CD-ROM - he gets all nostalgic.
  848. Back in 1982, two contributors to Personal Computer World, Sheridan Williams and Lee Calcraft, met properly for the first time. Sheridan was PCW's Agony Aunt, and Lee occasionally helped out with the hardware questions; but up until that point their conversations had mainly been by telephone. And just who was this David Graham
  849. As we would later find out, David Graham was a pen name Lee chose to give the impression that more people would be writing articles than actually were: the same technique was used by Acorn User (under Tony Quinn) and Micro User (with Mike Bibby)
  850. Ultimately, this meeting between Sheridan and Lee led to the formation of BEEBUG Limited, which along the way became a major force within the Acorn software market; as well as a publisher of BEEBUG, ELBUG, RISC User  and Acorn Action  magazines
  851. BEEBUG survived twelve years, until 1994, and it has to be said that when it ceased publication there was very little in the way of commercial BBC software available. ELBUG - BEEBUG's first sister magazine - lasted for fourteen issues, before being merged with BEEBUG magazine. ELBUG was designed to cater for the Electron user, but the market just didn't justify a subscription magazine dedicated to this machine
  852. In 1987, RISC User was launched. The only gap is Acorn Action, which lasted for one issue. In fact, less than 200 people subscribed to the magazine; making it perhaps the biggest risk to never come off - largely due to the small nature of the Acorn games market
  853. A potted history of RISC User
  854. At its launch, RISC User was co-edited by Mike Williams (of Acorn Publisher) and Lee Calcraft, the co-founder of BEEBUG. During its first year, the articles were largely concerned with getting used to the 32-bit technology: better was to follow as from year two RISC OS became available
  855. Throughout the life of the magazine BEEBUG chose to make the magazine disc an optional item; and quite expensive too. This gave them the budget to produce a magazine disc to a usually high standard, which was reflected in the reception by readers of the magazine. (During the last year, RISC User's disc budget did reduce, but I feel that the magazine discs still had a certain something)
  856. When RISC User did finally cease, in February of this year, the promised Nutshell CD-ROM; containing a simple history of RISC User in the form of software, magazine articles and more, was released by BEEBUG. The reception was superb, and now R-Comp have a few copies left which justify the inclusion of a this review
  857.  
  858. From small beginnings...
  859. Contained within the RISC User: In a Nutshell selection is every magazine disc published; the Quark X Press layouts for issues 1.1 through to 8.1; plus the available Acorn format files for every issue from then until its closure. I have, of course, forgotten to mention that also included is all of Beebug's so-called publications department software (the likes of DeskEdit, ArcScan) as well as a few other selections, including PlayBack (which I own), PolyGlot and others
  860. Just in case you missed them, the full text is included for most of the books published by Beebug, including Wimp Programming for All and Getting Into Ovation. If indeed you did miss them, these books are each a very good introduction to a certain aspect of Acorn computers. With Wimp Programming for All, Alan Wrigley produced a masterpiece which gave me my first introduction to WIMP programming; the result of which can be seen in the Sleuth 3 installer
  861. Navigation is easy, with the help of a smartly designed, very intuitive, interface which does more than ample justice to the author
  862. The author is, of course, Richard Hallas. When interviewed for Acorn User in 1999, Jill Regan quoted that he's a perfectionist. Fair comment, really. The RISC User: In a Nutshell disc was late in arriving, but it lived up to the promise very well, and is a great credit to Richard
  863. ...grow strong interests in Acorn
  864. Of course, at this point I'd like to point out that a magazine benefits most from having a wide variety of contributors. This was no exception for RISC User, and over the years the likes of Mark Moxon (ex-Acorn User) editor, Matt Browne, Andrew Clover of DoggySoft and David Bradforth (erm... yes) contributed all manner of items to the magazine and disc, of which I have chosen a few for a visual representation here
  865. The conclusion is very simple. The RISC User: In a Nutshell CD-ROM is a wonderful way to gain twelve years of features, reviews, hints & tips as well as tons of useful software for a stunning price
  866. Product details
  867. Product:
  868. RISC User: In a Nutshel
  869. Supplier:
  870. R-Comp Interactiv
  871. Price:
  872. £30 (add £2 for overseas postage
  873. Address:
  874. 22 Robert Moffat, High Legh, Knutsford WA16 6P
  875. Tel:
  876. 01925 75504
  877. Fax:
  878. 01925 75737
  879. WWW:
  880. E-mail:
  881. rcomp@rcomp.co.u
  882. David Bradforth
  883. Ex-Disc Editor, RISC User
  884.  
  885.  
  886. ÿÿÿÿVOLUME1/ISSUE3/PD/INDEX.HTM Volume 1, Issue 3, PD World
  887.  
  888.  
  889.  
  890.  
  891. PD World
  892. Alasdair Bailey takes RISC World readers through the world of PD and Shareware.
  893. Naturally Napster
  894. A Napster client for RISC OS has just been released. The program will allows RISC OS users to take part in the revolutionary music distribution network
  895. Napster is basically an organised network for people who want to swop music files in the compressed MP3 format over the internet. Although it is not solely for copyrighted material, piracy is rife on the Napster network. The scheme works like this; Every one running the client software specifies a directory of music files which they wish to make available to other users. That way, when you connect to the service, you have access to the music collections of thousands of people across the world. Typically, the total sum total will be somewhere around 10GB of compressed music
  896. With that much music to sort through, it's a good job a search facility is present. It allows you to search the entire online database by artist or song title. Once you have found the song you're after, a simple double click starts the transfer directly from the other Napster member's machine directly to you. That way, there's no central server so Napster themselves are not liable for any copyright infringement
  897. Napster has been brought to RISC OS in the form of the aptly named Riscster by Robert Dimond of Drobe software. A copy of Riscster can be found in the SOFTWARE directory on this CD but if you get the chance, do check www.riscster.cwc.net for the latest version. The main Drobe portal site at www.drobe.com is also well worth a visit
  898. Note: Since this article was written legal action by record companies has forced the closure of the Napster web site.
  899. Is it Wheely a Mouse?
  900. John Scott has produced a very handy little app in the form of !Wheel. The program allows you to connect a standard Microsoft Wheelmouse to the serial port of a RiscPC. Scrolling windows using the wheel is supported just like in Windows 98
  901. For those of you not yet aware of the Wheelmouse concept, I am referring to those mice which have a wheel mounted vertically in the space where the menu button should be. Do not fear though, the wheel itself can be depressed for use as a button as well as being turned to scroll the active window up and down
  902. Since the wheelmouse uses the serial port, it needs its own dedicated port. On RISC OS machines this causes a problem because most people will already have an external modem and only one serial port. Don't worry though, podule cards with extra ports are still available from Atomwide (phone 01689 814 500)
  903. The Wheelmouse comes highly recommended and now with this handy bit of shareware, we can all enjoy it. The mouse itself can be obtained for around £20 from most major PC retailers. We've included a copy of the unregisterd version of !Wheel in the SOFTWARE directory on the CD to save you the download. Registration costs just £5 and is highly recommended; it all goes towards helping with future development
  904. PD News on The IconBar
  905. Only weeks after its launch, the IconBar has started offering comprehensive PD/shareware news. A simple html form allows PD authors to draw the attention of the masses to any new or updated PD/shareware for the platform. Take a look at the bottom of www.iconbar.com for more info and to try the service yourself
  906. You may hae noticed that this issue's PD World is a little shorter than usual. This s partly due ot other work commitments but more to do with the fact that there's not terribly much going on at the minute. Let's see some action then people, keep me posted on pd@riscworld.com as usual
  907. Alasdair Bailey
  908.  
  909.  
  910. ÿÿÿÿVOLUME1/ISSUE3/PORTABLE/INDEX.HTM Volume 1, Issue 3, Portable World
  911.  
  912.  
  913.  
  914.  
  915. Portable World
  916. John Woodthorpe considers integrating RISCOS and EPOC.
  917. Hopefully the first two of these columns have started to persuade you that there is some value in having an EPOC machine. Judging by the emails I get, many RISC OS users share my belief in that. If you were at the Wakefield Show or go to any of the ARM Club shows, you'll be used to seeing plenty of people walking around checking off their purchases on a Psion or Pocketbook
  918. Issue 1 gave a general account of the different connectivity options, and the file conversion possibilities. Things haven't stood still since then, and I'm delighted to say that I can't remember the last time I used PsiWin. I think it was sometime in February when I converted an Excel spreadsheet I downloaded from a Web site to use on my netBook
  919. Integrating the Two Platforms
  920. So, how do I justify the statement in Issue 2 that the two platforms integrate with and complement each other? I'll briefly touch on the SIBO machines (the Series 3 / 3a / 3c / 3mx and Acorn / Xemplar  Pocketbook machines) first. I think Issue 1 demonstrated that PocketFS allows files to be moved to and fro and converted in an almost seamless manner. The newer machines such as the Series 3c and onwards need Gareth Babb's patch to provide the same level of functionality, but they benefit from the higher serial port speed of the palmtop and are still an excellent solution if you don't want the features of the Series 5 range. The EPOC machines (Series 5 / 5mx / 7 / Revo / netBook / Osaris / Geofox) are still the poor relations to some extent in that it still isn't possible to move files around as freely. Before I deal with those in more detail, I'll assume that you have three pieces of software
  921. PsiFS by Alexander Thoukydides and available from ChangePSI by Gert-Jan de Vos and available from PsiConv by Thomas Milius and available from 
  922. All are freeware and work with a wide range of operating system and hardware both from the RISC OS and EPOC side. In principle PsiRisc and ArcLink5 are alternatives to PsiFS, but the former seems not to be supported any more, and I can't get the latter to work properly with the file conversion applications. Given that PsiFS is being actively developed and is free, there really is no reason for not having a copy even if you regularly use one of the others. Even more important is the fact that the developers of PsiFS and the two conversion applications have been co-operating to ensure that their applications work together. PsiFS provides hooks for the file convertors to lock onto, allowing anyone to produce their own convertor to cater for the missing formats. If you do want to do that, I'd advise contacting the three people named above to continue the collaborative spirit and to avoid duplicating the effort
  923. PsiFS
  924. As the heart of this integration process, PsiFS is simply stunning. The range of options has increased to cover setting the time on the palmtop, reporting the battery condition,
  925. handling backups of files and the interface to the file convertors.
  926.  
  927. One new feature is the ability to convert a SIS file into a TAR archive. SIS files are used to automatically install applications on the Psion, and PsiRisc had this handy feature first.
  928. A SIS File Converted to a TAR Archive
  929. Its value is that it lets you see the files that are about to be installed and to read the contents to see contact details and instructions for use without having to install it
  930. The backup facility is now extremely comprehensive, with a range of choices to allow you to configure the behaviour to your liking and to handle multiple machines and CompactFlash cards. The time estimate for the progress of a backup is useful, but don't rely on it. Just as with PsiWin, the estimates it gives can fluctuate wildly
  931. A Backup in Progress
  932. What the File Convertors Do
  933. ChangePSI does the following conversions
  934. Word to RTF, text, or Impression DD
  935. Text to Word or OP
  936. OPL to Tex
  937. Sketch and MBM to Sprit
  938. Sprite to Sketch or MB
  939. Conversion is by dragging files to the ChangePSI icon in the normal way. In addition, Sketch and MBM files can be double-clicked to convert and display them, making them appear to be a RISC OS native format.
  940. Psionconv does the following conversions:
  941. Word to HTML 4·
  942. Sketch and MBM to Sprit
  943. OPL to tex
  944. Data to CSV or HTML tabl
  945. Record to ARMovi
  946. It doesn't have a graphical interface, nor does it load onto the icon bar. Instead files are converted and displayed by double-clicking them. The Word to HTML 4·0 conversion is especially impressive even though it isn't complete yet. It is currently the only tool a RISC OS user can employ to produce HTML 4·0 Web pages unless they write it manually with a text editor. The Data convertor is perhaps the hardest one to use as it does have problems with some files. At the moment it is easier to use the "Export" feature of Psion's Data application to produce CSV files, but I'm sure that will change with later versions
  947. What's Missing?
  948. It still isn't easy to convert files from a RISC OS format to an EPOC one. For example, I'd love to be able to convert a TechWriter file into something that my Psion can read. The only choice at the moment is to save it as text which will lose all the style information. Although the Psion can read MSWord files and TechWriter can both read and write MSWord, it sadly isn't possible to use that as an intermediate format. The reason for that is that TechWriter uses a file format compatible with, but not identical to, MSWord. Unfortunately, the Psion will only read true MSWord files and so ignores those created by TechWriter. An extra strand to this is the file convertor that the Neuon Shareware house are working on. It will run on the Psion, and offers the possibility that it will be able to plug some of these holes. A beta version is available from their Web site at www.neuon.com/ and I'll look at that in more detail when it has progressed further
  949. The two major omissions are convertors for Sheet and Agenda files, which are still dead-ends as far as importing or exporting data is concerned. That's why I sometimes resort to PsiWin and a PC to convert to and from Sheet files. If you're really stuck, it's worth experimenting by printing to a file with the "general" printer selected. That actually gives a text dump of the application's output and will at least let you get at the information in there. It's not ideal, but there are times when it's the best you can do without resoting to a PC running PsiWin. There is most definitely still hope for the RISC OS route as all three applications are progressing, and there's another file conversion application on the horizon that should be well worth looking at when it comes out. Again, I'll say more about that when it appears
  950. John Woodthorpe
  951.  
  952.  
  953. ÿÿÿÿVOLUME1/ISSUE3/PUZZLE/INDEX.HTM Volume 1, Issue 3, Puzzle World
  954.  
  955.  
  956.  
  957.  
  958. Puzzle World
  959. Rex sets RISC World readers another cunning conundrum.
  960. (This file is also available 
  961. Please send solutions 
  962. The winning solution for last issue's puzzle was sent in by A.J.Williams of Exeter
  963. The solution appreas below:
  964.  
  965. Rex
  966.  
  967.  
  968. ÿÿÿÿVOLUME1/ISSUE3/WSS/INDEX.HTM Volume 1, Issue 3, Warm Silence
  969.  
  970.  
  971.  
  972.  
  973. Warm Silence Software
  974. Alasdair Bailey has a brief look at a few of the items on offer from Warm Silence.
  975. WSS utils
  976. Warm Silence Software (or WSS) have been building up their catalogue of RISC OS utilities for some years now.  Past achievements include MovieFS for playing back foriegn movie files on the Acorn as well as LanMan98 for accessing Windows shared discs over a netework.  In this issue, we take a look at three of their offerings which essentially patch RISC OS
  977. PhotoFiler
  978. When I first saw PhotoShop running on a Mac, I marvelled at its ability to seamlessly replace those dull file icons with small thumbnails of the pictures within.  Last year, I saw a similar feature in Irlam's digital camera driver software on the Acorn.  This did the job but left much to be desired; it's quite slow and stores thumbnails in extra directories all over the place. PhotoFiler from WSS, on the other hand, is rather good
  979. The program takes the form of a small module which, once loaded, looks out for new directories being opened containing images.  When it sees a supported image type, it quickly reads the file to memory then places an icon-sized thumbnail sprite into the system sprite pool.  With all but the largest of images this process happens in a blink of the eye on a StrongARM. On lesser hardware things will be a little slower but still bearable
  980. By default, PhotoFiler will support sprites, JPEGs and drawfiles.  If you have ImageFS loaded (even the version bundled with RISC OS 4), support for all of its formats, including .wmf files will be added.  Unfortunately, no support for ArtWorks files currently exists
  981. PhotoFiler includes a few other little tricks to make the RISC OS filer more aesthetically pleasing.  Most notably, directories can each be given their own customised icon sprite to brighten up the desktop.  Another nice feature is the option to hide the pling (!) character from the beginning of application names.  This may lead to ambiguity if directories also have their own icons as previously described, but these things are all user-definable so it shouldn't be a problem in practice
  982. As PhotoFiler needs to read the whole image to memory before the thumbnail can be generated, things can get a little slow when working with floppy discs or an older CD drive. This needn't be a problem though as a brief press of the CTRL key will suppress thumbnail generation temporarily
  983. This former shareware offering does have a few shortcomings though.  Namely, thumbnails are stored in memory solely referenced by the file's path name.  Since no tracking is done to keep an eye on filer operations, if one file is deleted and another given the same name, the wrong thumbnail will be shown.  Okay, so a little speed is probably gained by not tracking filer operations but a keyboard shortcut to force a refresh would be nice
  984. At £11.75 (inc VAT), PhotoFiler is good value for anyone who takes clipart or imaging even semi-seriously.  Unfortunately, PhotoFiler does not support any version of RISC OS below v3.5 so you need at least a RiscPC or A7000 and it can't be used on older machines like the A5000
  985. Win95FS
  986. Ever put a PC formatted disc in your Acorn and had it show odd names like FILE~1.TXT with broken filetypes?  Well, this is because of the rather hacky method Windows 95 and above use to manage long filenames whilst maintaining backward compatibility with DOS.  To cut a long story short, DOSFS under RISC OS displays the truncated form of the Win95 name and the rest of the name messes up the space on the disc that RISC OS usually uses for filetype information
  987. Win95FS fixes all this, and I must admit I've been after this little utility for a long while now.  Luckily, it has fully lived up to my expectations.  It even remedies the problem for FAT32 formatted hard disc partitions if you need to access such things over a network or locally
  988. On the whole, Win95FS is a program that is hard to criticise, it does all it claims to and does it completely transparently to the user.  If your need to access Win95 and above disc media warrants the £41.25 (inc VAT) price tag, then talk to WSS now
  989. CDROMFS
  990. CDROMFS is another utility which enhances RISC OS.  Although its functionality should have been built into the OS years ago, now's not the time to complain.  The program is a replacement for Acorn's CD filing system module, CDFS.  As well as maintaining the same level of standard data and audio CD compatibility, CDROMFS adds support for Microsoft's Joliet standard and CDPlus
  991. The CDPlus format is used on those enhanced audio CDs which include movie data in addition to the song as an audio track.  Playing the video is another matter though; another product from WSS, MovieFS may be of some help here but check before buying.  Joliet, on the other hand is the CD format coined by Microsoft to allow long filenames to be used on CDs.  We mustn't criticise Microsoft in this respect though, even people putting together CDs for RISC OS find the ISO9660 format a pain
  992. In testing, CDROMFS performed very well indeed.  None of the CDs we put together using a CD writer on the PC proved at all problematic.  It is worth noting that Joliet format CDs will often crash Acorn's CDFS completely.  This can be a pain if you regularly have to read home made CDs from PC users because there's no way of knowing what formt the CD is until it goes in the drive
  993. A couple of well-established formats are not at present supported by CDROMFS; most notably packet-written CDs.  These are created by software which allows CDRW (CD re-writable) discs to be used as if they are large floppy discs.  Hence, data is burnt onto them in small packets rather than in long sections as with a conventionally recorded CDRW
  994. Since CDROMFS still uses the same lower-level modules as CDFS to talk to the CD drive, all drives which work under Acorn's filing system should work with CDROMFS.  On the other hand, this does also mean that no extra drives are supported by CDROMFS either
  995. Once CDROMFS is up and running, the CDFS module which it replaces can be unplugged.  When I say unplugged, I refer to the process of configuring the module not to load on startup in software; there's no physical unplugging to be done.  The WSS alternative also offers all the same sharing and volume options as CDFS.  It even supports Computer Concept's MacFS for reading Mac format CDs
  996. Overall, CDROMFS is a good product.  Granted, in-built Mac and packet written CD support would be nice to see in the product.  As with Win95FS, if you feel your need to access Joliet or CDPlus CDs warrants the hefty £35.25 price tag then make the buy
  997. Alasdair Bailey
  998.  
  999.